<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    template="/plantillas/plantilla-sistema.xhtml">
    <f:metadata>
        <f:event type="preRenderView" 
                 listener="#{recolectorBean.validarAcceso}"/>
    </f:metadata>
    <ui:define name="cabecera">
        <title>Gestión de Recolectores</title>
        <link rel="shortcut icon"  
              href="/resources/imagenes/favicon.ico" />
    </ui:define>
    <ui:define name="contenido">
        <center>
            <!-- Tabla de recolectores -->
            <p:panel id="recolectorPnl" 
                     header="Listado de Recolectores" 
                     styleClass="contenido">
                <h:form id="tablaRecolectorFrm">
                    <p:dataTable 
                        id="tablaRecolectorDtb" 
                        var="recolector" 
                        paginator="true" 
                        paginatorPosition="bottom" 
                        rows="10"
                        resizableColumns="true"
                        value="#{recolectorBean.listaEntidades}"
                        rowKey="#{recolector.nombre}" 
                        filteredValue="#{recolectorBean.listaEntidadesFiltradas}"
                        selectionMode="single"
                        style="text-align: center"
                        emptyMessage="No hay registros disponibles.">
                        <p:column 
                            headerText="Nombre completo" 
                            filterBy="#{recolector.nombre}" 
                            sortBy="#{recolector.nombre}" 
                            filterMatchMode="contains"
                            style="font-size: 110%">
                            <h:outputText 
                                value="#{recolector.nombre}" />
                        </p:column>
                        <p:column 
                            headerText="Alias" 
                            filterBy="#{recolector.alias}" 
                            sortBy="#{recolector.alias}" 
                            filterMatchMode="contains"
                            style="font-size: 110%">
                            <h:outputText value="#{recolector.alias}" />
                        </p:column>
                        <p:column 
                            headerText="Dirección" 
                            filterBy="#{recolector.direccion}" 
                            sortBy="#{recolector.direccion}" 
                            filterMatchMode="contains"
                            style="font-size: 110%">
                            <h:outputText 
                                value="#{recolector.direccion}" />
                        </p:column>
                        <p:column 
                            headerText="Teléfono" 
                            filterBy="#{recolector.telefono}" 
                            sortBy="#{recolector.telefono}" 
                            filterMatchMode="contains"
                            style="font-size: 110%">
                            <h:outputText 
                                value="#{recolector.telefono}" />
                        </p:column>
                        <p:column 
                            headerText="Correo Electrónico" 
                            filterBy="#{recolector.correoelectronico}" 
                            sortBy="#{recolector.correoelectronico}" 
                            filterMatchMode="contains"
                            style="font-size: 110%">
                            <h:outputText 
                                value="#{recolector.correoelectronico}" />
                        </p:column>
                        <p:column 
                            headerText="Estado" 
                            filterBy="#{recolector.habilitado == 'true' 
                                        ? 'Habilitado' : 'Deshabilitado'}" 
                            filterOptions="#{recolectorBean.itemsEstado}"
                            style="font-size: 110%">
                            <h:outputText 
                                value="#{recolector.habilitado == 'true'  
                               ? 'Habilitado' : 'Deshabilitado'}" />
                        </p:column>
                        <p:column 
                            headerText="Modificar"
                            style="font-size: 110%"
                            rendered="#{sesionBean.verificarPermiso('modificar','recolector')}">
                            <center>
                                <p:commandButton 
                                    id="modificarBtn" 
                                    title="Modificar" 
                                    icon="ui-icon-pencil"
                                    actionListener="#{recolectorBean.prepararModificacion(recolector)}"
                                    update=":guardarRecolectorFrm:guardarRecolectorPnl"
                                    oncomplete="guardarRecolectorWgt.show()"> 
                                    <f:setPropertyActionListener 
                                        target="#{recolectorBean.operacionActual}"
                                        value="ACTUALIZACION" />
                                </p:commandButton>
                            </center>
                        </p:column>
                        <p:column 
                            headerText="Eliminar"
                            style="font-size: 110%"
                            rendered="#{sesionBean.verificarPermiso('eliminar','recolector')}">
                             <center>
                                 <p:commandButton 
                                     id="eliminarBtn"
                                     title="Eliminar" 
                                     actionListener="#{recolectorBean.prepararEliminacion(recolector)}"
                                     icon="ui-icon-trash"
                                     update="@form" 
                                     oncomplete="confirmacionWgt.show()">
                                     <f:setPropertyActionListener
                                         target="#{recolectorBean.operacionActual}" 
                                         value="ELIMINACION" />
                                 </p:commandButton>
                             </center>
                        </p:column>
                        <f:facet name="footer">
                            <p:commandButton 
                                id="agregarBtn" 
                                value="Nuevo Recolector"
                                oncomplete="guardarRecolectorWgt.show()"
                                actionListener="#{recolectorBean.prepararAdicion}"
                                update=":guardarRecolectorFrm:guardarRecolectorPnl"
                                title="Agregar nuevo recolector" 
                                icon="ui-icon-document" 
                                style="float:left; font-size: 110%"
                                rendered="#{sesionBean.verificarPermiso('agregar','recolector')}">
                                <f:setPropertyActionListener 
                                    target="#{recolectorBean.operacionActual}" 
                                    value="INSERCION" />
                            </p:commandButton>
                        </f:facet>
                    </p:dataTable>                  
                </h:form>
            </p:panel>
        </center>     
    </ui:define>
    <ui:define name="extra">
        <!-- Tabla guardar y modificar -->
        <p:dialog id="guardarRecolectorDlg" 
                  header="Datos del Recolector"  
                  widgetVar="guardarRecolectorWgt" 
                  resizable="false" 
                  modal="true"
                  draggable="false"
                  closable="false"
                  style="font-size: 85%">
            <h:form 
                id="guardarRecolectorFrm">
                <p:messages id="mensajesMsg" 
                            globalOnly="true" />
                <h:panelGrid 
                    id="guardarRecolectorPnl" 
                    columns="3" 
                    style="margin-bottom:10px; font-size: 85%">
                    <h:outputLabel 
                        for="nombreTxt" 
                        value="Nombre completo: " />
                    <p:inputText 
                        id="nombreTxt" 
                        title="Obligatorio" 
                        value="#{recolectorBean.entidad.nombre}">
                        <f:attribute 
                            name="regex" 
                            value="#{regex.textoobligatorio}" />
                        <f:attribute 
                            name="formato" 
                            value="Solo caracteres" />
                        <f:validator 
                            validatorId="regexValidator" />
                   </p:inputText>
                    <p:panel style="border:none; font-size: 85%">
                        <p:tooltip 
                            for="nombreTxt" 
                            showEvent="focus" 
                            hideEvent="blur" 
                            rendered="#{recolectorBean.tieneErrores('guardarRecolectorFrm:nombreTxt')}">
                            <p:message 
                                id="nombreMsg" 
                                for="nombreTxt"
                                display="text" />
                        </p:tooltip>
                    </p:panel>
                    <h:outputLabel 
                        for="aliasTxt" 
                       value="Alias: " />
                    <p:inputText 
                        id="aliasTxt" 
                        title="Opcional"
                        value="#{recolectorBean.entidad.alias}"/>
                    <p:panel style="border:none; font-size: 85%">
                        <p:tooltip for="aliasTxt" 
                                   showEvent="focus" 
                                   hideEvent="blur" 
                                   rendered="#{recolectorBean.tieneErrores('guardarRecolectorFrm:aliasTxt')}">
                            <p:message id="aliasMsg" 
                                       for="aliasTxt"
                                       display="text" />
                        </p:tooltip>
                    </p:panel>
                    <h:outputLabel for="direccionTxt" 
                                   value="Dirección: " />
                    <p:inputText id="direccionTxt" 
                                 title="Obligatorio"
                                 value="#{recolectorBean.entidad.direccion}"
                                 requirred="true">
                   </p:inputText>
                    <p:panel style="border:none; font-size: 85%">
                        <p:tooltip 
                            for="direccionTxt" 
                            showEvent="focus" 
                            hideEvent="blur" 
                            rendered="#{recolectorBean.tieneErrores('guardarRecolectorFrm:direccionTxt')}">
                            <p:message 
                                id="direccionMsg" 
                                for="direccionTxt"
                                display="text" />
                        </p:tooltip>
                    </p:panel>
                    <h:outputLabel 
                        for="telefonoTxt" 
                        value="Teléfono: " />
                    <p:inputMask 
                        id="telefonoTxt" 
                        required="true"
                        title="Obligatorio" 
                        mask="(999)9999-9999"
                        value="#{recolectorBean.entidad.telefono}">
                        <f:attribute 
                                name="regex" 
                                value="#{regex.telefono}" />
                            <f:attribute 
                                name="formato" 
                                value="(###)####-####" />
                            <f:validator 
                                validatorId="regexValidator" />
                    </p:inputMask>
                    <p:panel style="border:none; font-size: 85%">
                        <p:tooltip 
                            for="telefonoTxt" 
                            showEvent="focus" 
                            hideEvent="blur" 
                            rendered="#{recolectorBean.tieneErrores('guardarRecolectorFrm:telefonoTxt')}">
                            <p:message 
                                id="telefonoMsg" 
                                for="telefonoTxt"
                                display="text" />
                        </p:tooltip>
                    </p:panel>
                    <h:outputLabel 
                        for="correoelectronicoTxt" 
                        value="Correo electrónico: " />
                    <p:inputText 
                        id="correoelectronicoTxt" 
                        title="Obligatorio"
                        required="true"
                        value="#{recolectorBean.entidad.correoelectronico}">
                        <f:attribute 
                                name="regex" 
                                value="#{regex.correo}" />
                            <f:attribute 
                                name="formato" 
                                value="usuario@dominio" />
                            <f:validator 
                                validatorId="regexValidator" />
                            </p:inputText>
                    <p:panel style="border:none; font-size: 85%">
                        <p:tooltip 
                            for="correoelectronicoTxt" 
                            showEvent="focus" 
                            hideEvent="blur" 
                            rendered="#{recolectorBean.tieneErrores('guardarRecolectorFrm:correoelectronicoTxt')}">
                            <p:message 
                                id="correoelectronicoMsg" 
                                for="correoelectronicoTxt"
                                display="text" />
                        </p:tooltip>
                    </p:panel>
                    <p:outputLabel 
                        for="habilitadoTxt" 
                        value="Habilitado: " 
                        rendered="#{recolectorBean.operacionActual == 'ACTUALIZACION'}"/>
                    <p:selectBooleanCheckbox 
                        id="habilitadoTxt" 
                        value="#{recolectorBean.entidad.habilitado}" 
                        rendered="#{recolectorBean.operacionActual == 'ACTUALIZACION'}"/>
                    <p:panel style="border:none; font-size: 85%"
                             rendered="#{recolectorBean.operacionActual == 'ACTUALIZACION'}">
                        <p:tooltip 
                            for="habilitadoTxt" 
                            showEvent="focus" 
                            hideEvent="blur" 
                            rendered="#{recolectorBean.tieneErrores('guardarRecolectorFrm:habilitadoTxt')}">
                            <p:message 
                                id="habilitadoMsg" 
                                for="habilitadoTxt"
                                display="text" />
                        </p:tooltip>
                    </p:panel>
                </h:panelGrid>
                <p:separator />
                <br/>
                <p:commandButton 
                    id="guardarBtn" 
                    actionListener="#{recolectorBean.guardarEntidad}" 
                    oncomplete="if ( !args.validationFailed )
                                guardarRecolectorWgt.hide()" 
                    update="@form,:tablaRecolectorFrm:tablaRecolectorDtb" 
                    value="Guardar" 
                    icon="ui-icon-disk" 
                    title="Guardar"
                    style="float:right; font-size: 85%"/>
                    <p:commandButton 
                        value="Cancelar" 
                        actionListener="#{recolectorBean.revertirCambios}" 
                        onclick="guardarRecolectorWgt.hide()"
                        icon="ui-icon-cancel" 
                        title="Cancelar"
                        immediate="true"
                        style="float:right; font-size: 85%">
                        <f:setPropertyActionListener 
                            target="#{recolectorBean.operacionActual}" 
                            value="NINGUNA" />
                    </p:commandButton>
            </h:form>
        </p:dialog>    
        <!-- Diálogo de confirmación de eliminación -->
        <p:confirmDialog 
            id="confirmacionDlg" 
            message="¿Está seguro que desea eliminar éste registro?" 
            header="Eliminar Recolector" 
            widgetVar="confirmacionWgt" 
            severity="alert"
            width="300"
            closable="false"
            style="font-size: 85%">    
            <h:form>
            <p:messages 
             id="mensajesMsg" 
             globalOnly="true" />
                <p:commandButton 
                    value="Eliminar"
                    actionListener="#{recolectorBean.eliminarEntidad}"
                    icon="ui-icon-trash" 
                    style="float:right; font-size: 85%"
                    update="@form,:tablaRecolectorFrm:tablaRecolectorDtb"
                    oncomplete="if ( !args.validationFailed ) confirmacionWgt.hide()"/>
                <p:commandButton 
                    value="Cancelar"
                    update="@form"
                    oncomplete="confirmacionWgt.hide()" 
                    icon="ui-icon-cancel" 
                    style="float:right; font-size: 85%">
                    <f:setPropertyActionListener 
                        target="#{recolectorBean.operacionActual}" 
                        value="NINGUNA" />
                </p:commandButton>
            </h:form>
        </p:confirmDialog>
    </ui:define>
</ui:composition>